package com.yxe.service;

import cn.dev33.satoken.stp.SaTokenInfo;
import com.yxe.pojo.User;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

/**
 * @author X
 * @description 针对表【tb_user】的数据库操作Service
 * @createDate 2022-12-10 11:48:37
 */
public interface UserService extends IService<User> {

    /**
     * 创建验证码
     *
     * @param telephone 手机号
     * @return boolean
     */
    Boolean generateLoginAuthCode(String telephone);

    /**
     * 用户使用手机号加验证码进行登录
     *
     * @param telephone 手机号
     * @param authCode  验证码
     * @return SaTokenInfo
     */
    SaTokenInfo loginByAuthCode(String telephone, String authCode);

    /**
     * 根据手机号查找用户信息
     *
     * @param telephone 手机号
     * @return User对象
     */
    User findUserByTelephone(String telephone);

    /**
     * 根据手机号和密码登录
     *
     * @param telephone 手机号
     * @param password  密码
     * @return user对象
     */
    SaTokenInfo loginByPwd(String telephone, String password);

    /**
     * 根据用户id修改用户登录密码
     *
     * @param newPassword 新密码
     * @return 影响行数
     */
    Boolean updatePasswordById(String authCode, String newPassword);

    /**
     * 上传用户头像
     *
     * @param multipartFile multipartFile
     */
    void uploadHeadPortrait(MultipartFile multipartFile);

    /**
     * 生成验证码【用于修改密码时的验证】
     *
     * @return 是否生成
     */
    Boolean generateUpdateAuthCode();

    /**
     * 修改用户昵称
     * @param nickname 昵称
     * @return 影响行数
     */
    Integer updateNickName(String nickname);


    /**
     * 获取当前登录用户信息
     * @param token token
     * @return map集合
     */
    //Map<String,String> getAdminInfo(String token);

    /**
     * 根据手机号和密码登录【原始方法】
     * @param telephone 手机号
     * @param password 密码
     * @return user对象
     */
    //String loginByPwd(String telephone, String password);
}
